在 Proxmox VE 管理介面可以方便的建立客體虛擬機、硬體配置,以及開啟主控台安裝系統與客體內的設定,不過有關帳號密碼、網路 IP 及 DNS 等設定就不能在管理介面上方便的配置,有沒有更容易可以讓我在 Proxmox VE 管理介面上一次搞定的方法?
當然是有,而且非常容易使用!
目前 Cloud-Init 支援大部份的 Linux 作業系統發行版本,較新的發行版本已有內建,可在安裝有 Ubuntu 的客體機內使用以下指令進行檢查:
dpkg -l | grep cloud-init
檢查是否已安裝 Cloud-Init 套件
若沒有內建的亦可很容易的安裝起來,以 Ubuntu Linux 為例:
apt install cloud-init
目前 Cloud-Init 官網上列出有支援的作業系統與發行版本如下:
補充:
Windows 作業系統也有公司開發 Cloud-Init 的相關套件,如有興趣可以至文末參考資料下載。
技巧:
也可以直接下載預先配置好的 Linux 發行版 Cloud Image,匯入 Proxmox VE 客體機後直接開機就可以套用 Cloud-Init 進行初始化,連安裝作業系統的工作都省去。由於牽涉到 Proxmox VE 的 CLI 命令列指令,將於日後篇幅提及。
接下來要為客體機增加一個 Cloud-Init 磁碟機,請選取客體機後,切換至 硬體
頁籤,按下 增加
按鈕,選取 CloudInit 磁碟機
。
準備新增 Cloud-Init 磁碟機
進入 Cloud-Init 選項視窗後,只需在 儲存
下拉清單中指定 Cloud-Init 磁碟機要存放的儲存集區,再按下 建立
即可。
新增 Cloud-Init 磁碟機選項視窗
建立完成以後,硬體清單中即會增加一筆 CloudInit 磁碟機 (ide0)
項目。
新增 Cloud-Init 磁碟機完成
除了磁碟機外,還需要增加一個序列埠裝置,以讓 Cloud-Init 可以正確連動。請按下 增加
按鈕,選取 序列埠
項目。
準備新增序列埠
在彈出的序列埠選項視窗中,直接按下 增加
按鈕。
新增序列埠選項視窗
序列埠增加完成後,可以在硬體清單中確認。
最後,我們還要把原本的虛擬光碟機移除,才不會影響到客體機啟動時由 Cloud-Init 磁碟機的讀取設定作業。請選取 CD/DVD 裝置 (ide2)
,再按下 移除
按鈕,彈出的確認對話框按下 是
即可移除之。
移除虛擬光碟機
前置作業完成後,可以準備設定 Cloud-Init 的各項參數。切換至 Cloud-Init
頁籤,點選 帳號
兩下準備進入設定。
準備設定 Cloud-Init 帳號
彈出帳號對話視窗後,請填入要設定的帳號名稱。
設定 Cloud-Init 帳號
接著再點選 密碼
欄位兩次,進入密碼設定視窗。
設定 Cloud-Init 密碼
提醒:
只有直接使用 Cloud Image 映像檔的客體機可以初始化帳號與密碼。
當帳號與密碼設定完成後,再按下 DNS 網域名稱
兩下,進入設定對話視窗。若保留預設,則會以節點實體機的 DNS 網域名稱跟伺服器自動帶入。
設定 Cloud-Init DNS 網域名稱及伺服器
若有預備好的客戶端 SSH 公開金鑰,也可以在此填入,以用做日後使用免密碼方式遠端連入這台客體機。
設定 Cloud-Init SSH 公開金鑰
最後是網路設定,經由 Cloud-Init 功能即可讓我們在 Proxmox VE 介面上方便的為客體虛擬機指定好 IP,免去許多設定的手續。
設定 Cloud-Init 網路
當全數設定完成後,可以檢視一下 Cloud-Init 清單的內容,確認無誤後請按下 重新產生映像
讓它生效。
產生 Cloud-Init 映像檔
做完前置各項設定後,就可以啟動客體機來驗證設定是否正確生效。
確認已經由 Cloud-Init 設定好 IP
如果 Cloud-Init 設定套用仍然無效,請開啟客體機主控台進行以下操作:
# 清除已有的 Cloud-Init 設定
cloud-init clean
# 移除 Cloud-Init 其它設定檔案
rm -rf /etc/cloud
rm -rf /var/lib/cloud/instances
rm /etc/netplan/00-installer-config.yaml
# 重新啟動
reboot
若 Cloud-Init 相關設定正確無誤,應於重新啟動後生效。
Cloud-Init Support - Proxmox VE
https://pve.proxmox.com/wiki/Cloud-Init_Support
The standard for customising cloud instances
https://cloud-init.io/
canonical/cloud-init: Official upstream for the cloud-init: cloud instance initialization
https://github.com/canonical/cloud-init
Cloudbase-Init - Cloudbase Solutions
https://cloudbase.it/cloudbase-init/